﻿using System;
using System.Collections.ObjectModel;
using PairingMatrix.Common.Command;
using PairingMatrix.Common.Enum;
using PairingMatrix.ViewModel;

namespace PairingMatrix.Design
{
    public class CardWallViewModel : ViewModelBase, ICardWallViewModel
    {
        public CardWallViewModel()
        {
            TeamMembers = new ObservableCollection<ITeamMemberCardViewModel> {new TeamMemberCardViewModel(), new TeamMemberCardViewModel()};
            ProjectCards = new ObservableCollection<IProjectCardViewModel> {new ProjectCardViewModel(), new ProjectCardViewModel()};
            MingleCards = new ObservableCollection<IProjectCardViewModel> {new ProjectCardViewModel(), new ProjectCardViewModel()};
        }

        public ObservableCollection<ITeamMemberCardViewModel> TeamMembers { get; set; }

        public ObservableCollection<IProjectCardViewModel> ProjectCards { get; set; }
        public ObservableCollection<IProjectCardViewModel> MingleCards { get; set; }

        public IDateStripViewModel EndDateStrip
        {
            get { return new DateStripViewModel(); }
        }

        public IDateStripViewModel StartDateStrip
        {
            get { return new DateStripViewModel(); }
        }

        public void PlaceProjectCardInSelectedColumn(IProjectCardViewModel projectCardViewModel)
        {
            throw new NotImplementedException();
        }

        public StoryStatus SelectedStoryStatus
        {
            get { return StoryStatus.New; }
            set {  }
        }

        public ISettingsViewModel SettingsViewModel
        {
            get { throw new NotImplementedException(); }
        }

        public bool IsSyncingAllProjectCards
        {
            get { return false; }
        }

        public void AttachTeamMemberToProjectCard(ITeamMemberCardViewModel teamMemberCard, IProjectCardViewModel nearestProjectCard)
        {
            throw new NotImplementedException();
        }

        public void DetachTeamMemberFromAllProjectCards(ITeamMemberCardViewModel dataContext)
        {
            throw new NotImplementedException();
        }

        public void RemoveProjectCardFromWall(DateTime date, int cardNumber)
        {
            throw new NotImplementedException();
        }

        public void DeleteTeamMemberCard(Guid id)
        {
            throw new NotImplementedException();
        }

        public void AttachSecondaryProjectCardToProjectCard(IProjectCardViewModel secondaryCard, IProjectCardViewModel primaryCard, double projectCardX, double projectCardY)
        {
            throw new NotImplementedException();
        }

        public void DetachProjectCardFromAllProjectCards(IProjectCardViewModel projectCard)
        {
            throw new NotImplementedException();
        }

        public ITimer TimerViewModel
        {
            get { throw new NotImplementedException(); }
        }

        public string DaysToIterationEnd
        {
            get { return "Iteration ends in 10 days"; }
        }

        public double TotalCostOfIceCreams { get; set; }

        public IPriorityCounterViewModel ReadyForDevPriorityCounter
        {
            get { throw new NotImplementedException(); }
        }

        public IPriorityCounterViewModel InDevPriorityCounter
        {
            get { throw new NotImplementedException(); }
        }

        public IPriorityCounterViewModel InQAPriorityCounter
        {
            get { throw new NotImplementedException(); }
        }

        public IPriorityCounterViewModel ShowcaseDonePriorityCounter
        {
            get { throw new NotImplementedException(); }
        }

        public IPriorityCounterViewModel ClosedPriorityCounter
        {
            get { throw new NotImplementedException(); }
        }

        public AbsenteesViewModel AbsenteesViewModel
        {
            get { throw new NotImplementedException(); }
        }

        public RelayCommand ClearIceCreamsCommand { get; private set; }
    }
}
